Apache POI লাইব্রেরি ব্যবহার করে আপনি Word Templates তৈরি করতে পারেন এবং সেই টেমপ্লেটের ভিত্তিতে Document Generation (ডকুমেন্ট প্রজন্ম) করতে পারেন। এই ফিচারটি খুবই কার্যকর যখন আপনাকে অনেক ডকুমেন্ট তৈরি করতে হয় যেগুলির বেশিরভাগ অংশ এক ধরনের থাকে, তবে কিছু অংশ (যেমন ব্যবহারকারীর নাম, ঠিকানা, তারিখ ইত্যাদি) পরিবর্তনশীল হয়। এর মাধ্যমে আপনি ডায়নামিকভাবে ডকুমেন্ট তৈরি করতে পারেন।
Word Templates এমন একটি ডকুমেন্ট ফাইল, যা মূলত একটি ব্ল্যাংক টেমপ্লেট হিসেবে কাজ করে এবং প্রয়োজনীয় স্থানে ডাটা ইনপুট করার জন্য প্লেসহোল্ডার থাকে। Apache POI ব্যবহার করে আপনি এই প্লেসহোল্ডারগুলির মাধ্যমে ডাইনামিক ডেটা ঢুকিয়ে একটি নতুন Word ডকুমেন্ট তৈরি করতে পারেন।
ধরা যাক, আপনার কাছে একটি .docx ফাইল রয়েছে, যেখানে কিছু ${placeholder} প্লেসহোল্ডার ব্যবহার করা হয়েছে। আপনি এই প্লেসহোল্ডারগুলিকে প্রতিস্থাপন করতে চান।
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class TemplateGenerationExample {
public static void main(String[] args) {
try {
// Template Word ডকুমেন্ট লোড করা
FileInputStream templateFile = new FileInputStream("template.docx");
XWPFDocument document = new XWPFDocument(templateFile);
// Template ডকুমেন্টে টেক্সট পরিবর্তন করা
for (XWPFParagraph paragraph : document.getParagraphs()) {
String paragraphText = paragraph.getText();
if (paragraphText.contains("${name}")) {
paragraphText = paragraphText.replace("${name}", "John Doe");
}
if (paragraphText.contains("${date}")) {
paragraphText = paragraphText.replace("${date}", "2024-12-17");
}
// পরিবর্তিত টেক্সট সেট করা
XWPFRun run = paragraph.createRun();
run.setText(paragraphText);
}
// পরিবর্তিত ডকুমেন্ট সেভ করা
FileOutputStream out = new FileOutputStream("generated_document.docx");
document.write(out);
out.close();
System.out.println("Document generated from template successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
আপনি Dynamic Content (যেমন ব্যবহারকারীর নাম, অ্যাড্রেস ইত্যাদি) ব্যবহার করে টেমপ্লেটের মধ্যে পরিবর্তন আনতে পারেন। এটি সাধারণত looping, conditional statements, বা dynamic form generation এর মাধ্যমে করা হয়।
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
public class DynamicContentGenerationExample {
public static void main(String[] args) {
try {
// Template Word ডকুমেন্ট লোড করা
FileInputStream templateFile = new FileInputStream("template.docx");
XWPFDocument document = new XWPFDocument(templateFile);
// ডাইনামিক কনটেন্ট (যেমন একটি তালিকা) যোগ করা
List<String> items = List.of("Item 1", "Item 2", "Item 3");
// নতুন প্যারাগ্রাফ তৈরি করা এবং তালিকাভুক্ত কনটেন্ট যোগ করা
XWPFParagraph listParagraph = document.createParagraph();
for (String item : items) {
XWPFRun run = listParagraph.createRun();
run.setText(item);
run.addBreak(); // নতুন লাইন শুরু করার জন্য
}
// পরিবর্তিত ডকুমেন্ট সেভ করা
FileOutputStream out = new FileOutputStream("generated_dynamic_document.docx");
document.write(out);
out.close();
System.out.println("Document generated with dynamic content successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache POI লাইব্রেরি ব্যবহার করে আপনি Word Templates তৈরি করে Dynamic Document Generation করতে পারেন। টেমপ্লেটে placeholders ব্যবহার করে, আপনি ডাইনামিক কনটেন্ট (যেমন ব্যবহারকারীর নাম, তারিখ, তালিকা ইত্যাদি) সহজেই প্রতিস্থাপন করতে পারেন। এটি অনেক কাজে আসে যখন আপনাকে একই ধরনের ডকুমেন্ট একাধিক বার তৈরি করতে হয়, তবে প্রতিটি ডকুমেন্টে কিছু তথ্য ভিন্ন থাকে।
Apache POI লাইব্রেরি ব্যবহার করে আপনি Word Templates তৈরি এবং ব্যবহার করতে পারেন। Word Templates হলো এমন ডকুমেন্ট যা একটি নির্দিষ্ট কাঠামো বা ফর্ম্যাট অনুসরণ করে, এবং পরবর্তীতে এই টেমপ্লেট ব্যবহার করে নতুন ডকুমেন্ট তৈরি করা যায়। টেমপ্লেট ব্যবহার করার সুবিধা হল, আপনি একই ধরনের ডকুমেন্ট বারবার তৈরি করতে পারেন, শুধুমাত্র কিছু নির্দিষ্ট তথ্য পরিবর্তন করে।
এখানে আমরা দেখাবো কীভাবে একটি Word Template তৈরি করা যায় এবং কিভাবে Apache POI দিয়ে তা ব্যবহার করা যায়।
ধরা যাক, আপনি একটি Certificate Template তৈরি করতে চান যা পরবর্তীতে বিভিন্ন নাম এবং তারিখ সহ ব্যবহার করা যাবে। প্রথমে একটি টেমপ্লেট তৈরি করতে হবে, যা placeholder টেক্সট ধারণ করবে। তারপর আপনি এই টেমপ্লেটটি ব্যবহার করে নতুন ডকুমেন্ট তৈরি করবেন।
{Name}
এবং {Date}
হল placeholder টেক্সট।এখন Apache POI ব্যবহার করে আমরা এই টেমপ্লেট থেকে একটি নতুন ডকুমেন্ট তৈরি করব, যেখানে {Name}
এবং {Date}
এর জায়গায় বাস্তবিক মান (নাম এবং তারিখ) প্রবেশ করবে।
import org.apache.poi.xwpf.usermodel.*;
import java.io.*;
import java.util.*;
public class WordTemplateExample {
public static void main(String[] args) {
try {
// টেমপ্লেট ফাইল লোড করা
FileInputStream templateFile = new FileInputStream("certificate_template.docx");
XWPFDocument templateDoc = new XWPFDocument(templateFile);
// টেমপ্লেটের সমস্ত প্যারাগ্রাফ খুঁজে বের করা
List<XWPFParagraph> paragraphs = templateDoc.getParagraphs();
// টেমপ্লেটের মধ্যে placeholder টেক্সট প্রতিস্থাপন করা
for (XWPFParagraph paragraph : paragraphs) {
for (XWPFRun run : paragraph.getRuns()) {
String text = run.getText(0);
if (text != null) {
// {Name} এবং {Date} প্রতিস্থাপন করা
text = text.replace("{Name}", "John Doe")
.replace("{Date}", "2024-12-17");
run.setText(text, 0);
}
}
}
// নতুন ডকুমেন্টটি সেভ করা
FileOutputStream out = new FileOutputStream("new_certificate.docx");
templateDoc.write(out);
out.close();
System.out.println("নতুন ডকুমেন্ট সফলভাবে তৈরি করা হয়েছে!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
{Name}
এবং {Date}
) আসল মানে প্রতিস্থাপন করা হয়।এই কোডটি একটি নতুন certificate ডকুমেন্ট তৈরি করবে, যেখানে {Name}
এবং {Date}
যথাক্রমে "John Doe" এবং "2024-12-17" দিয়ে প্রতিস্থাপিত হবে।
আপনি চাইলে Word Template-এ বিভিন্ন ধরনের placeholder ব্যবহার করতে পারেন, যেমন:
এই প্লেসহোল্ডারগুলির মান পরিবর্তন করতে আপনি কোডের মধ্যে replace() মেথড ব্যবহার করতে পারেন।
text = text.replace("{CompanyName}", "ABC Corp")
.replace("{EmployeeName}", "Jane Smith")
.replace("{Date}", "2024-12-17");
Apache POI লাইব্রেরি ব্যবহার করে আপনি Word Template তৈরি এবং ব্যবহার করতে পারেন। একটি টেমপ্লেট ডকুমেন্টে placeholder টেক্সট রেখে পরবর্তীতে সেই টেমপ্লেটটি ব্যবহার করে ডকুমেন্টের ভেতরে বাস্তবিক তথ্য যেমন নাম, তারিখ, বা অন্যান্য ডেটা প্রতিস্থাপন করা হয়। এই পদ্ধতিটি পুনরাবৃত্ত কাজকে সহজ এবং দ্রুত করে তোলে, এবং এটি কাস্টম ডকুমেন্ট তৈরির জন্য খুবই উপকারী।
Apache POI ব্যবহার করে আপনি Word ডকুমেন্ট তৈরি করতে পারেন এবং এটি একটি Template থেকে Dynamic Content সহ নতুন ডকুমেন্ট তৈরি করতে পারেন। এই প্রক্রিয়ায়, একটি স্ট্যাটিক Word Template (যেমন .docx
ফাইল) ব্যবহার করা হয়, যেখানে পূর্বনির্ধারিত টেক্সট বা প্লেসহোল্ডার থাকে এবং প্রোগ্রামmatically সেই টেক্সট বা প্লেসহোল্ডার পরিবর্তন বা প্রতিস্থাপন করা হয়।
এই পদ্ধতিতে, আপনার Template ফাইলের কিছু অংশ ডাইনামিকভাবে পরিবর্তন করা সম্ভব, যেমন নাম, তারিখ, ঠিকানা, অথবা অন্যান্য কাস্টম ডেটা।
${name}
, ${date}
) ব্যবহার করবেন।ধরা যাক, আমাদের কাছে একটি টেমপ্লেট template.docx
ফাইল আছে, যেখানে কিছু প্লেসহোল্ডার আছে যেমন ${name}
এবং ${date}
। এখন আমরা এই টেমপ্লেটটি ব্যবহার করে একটি নতুন ডকুমেন্ট তৈরি করব, যেখানে এই প্লেসহোল্ডারগুলো ডাইনামিক ডেটা দিয়ে প্রতিস্থাপন করা হবে।
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Map;
public class DynamicDocumentGeneration {
public static void main(String[] args) throws IOException {
// Template ডকুমেন্ট লোড করা
FileInputStream fis = new FileInputStream("template.docx");
XWPFDocument document = new XWPFDocument(fis);
// ডাইনামিক ডেটা
Map<String, String> data = Map.of(
"${name}", "John Doe",
"${date}", "2024-12-17"
);
// টেমপ্লেটে প্লেসহোল্ডার গুলি প্রতিস্থাপন করা
for (XWPFParagraph paragraph : document.getParagraphs()) {
for (XWPFRun run : paragraph.getRuns()) {
String text = run.getText(0);
if (text != null) {
// প্লেসহোল্ডার গুলি প্রতিস্থাপন করা
for (Map.Entry<String, String> entry : data.entrySet()) {
if (text.contains(entry.getKey())) {
text = text.replace(entry.getKey(), entry.getValue());
run.setText(text, 0); // প্রতিস্থাপিত টেক্সট সেট করা
}
}
}
}
}
// নতুন ডকুমেন্ট সংরক্ষণ
FileOutputStream out = new FileOutputStream("generated_document.docx");
document.write(out);
out.close();
System.out.println("ডাইনামিক ডকুমেন্ট সফলভাবে তৈরি হয়েছে।");
}
}
(${name})
এবং (${date})
এর পরিবর্তে আসল মান দেওয়া হয়েছে।Apache POI ব্যবহার করে আপনি সহজেই একটি Template Word Document থেকে Dynamic Document তৈরি করতে পারেন। টেমপ্লেটে প্লেসহোল্ডার বা স্ট্যাটিক টেক্সট রেখে, প্রোগ্রামmatically তা পরিবর্তন করে ডাইনামিক কনটেন্ট যোগ করা সম্ভব। এটি বিভিন্ন প্রয়োজনে যেমন কাস্টম রিপোর্ট তৈরি, চিঠি বা নোটিফিকেশন ইত্যাদি তৈরিতে কাজে আসে। Template থেকে ডাইনামিক ডকুমেন্ট জেনারেট করার জন্য XWPFParagraph এবং XWPFRun ব্যবহার করা হয় টেক্সট ম্যানিপুলেট করার জন্য।
Apache POI লাইব্রেরি ব্যবহৃত হয় Word ডকুমেন্টের কনটেন্ট ম্যানিপুলেশনের জন্য। এক্ষেত্রে Placeholder Text এবং Data Binding দুটি গুরুত্বপূর্ণ ফিচার। এই ফিচারগুলোকে ব্যবহার করে আপনি ডকুমেন্টে ডাইনামিক ডেটা সন্নিবেশ করতে পারেন এবং placeholder টেক্সটকে data দিয়ে প্রতিস্থাপন করতে পারেন। নিচে Placeholder Text এবং Data Binding ব্যবহারের বিস্তারিত আলোচনা করা হলো।
Placeholder Text হল এমন একটি টেক্সট যা একটি নির্দিষ্ট স্থানে temporarily (অস্থায়ীভাবে) থাকে, যা পরে ডাইনামিক ডেটা বা ব্যবহারকারীর ইনপুট দিয়ে প্রতিস্থাপন করা হয়। এটি সাধারণত ফর্ম বা টেমপ্লেট ডকুমেন্টে ব্যবহৃত হয়, যেখানে নির্দিষ্ট ফিল্ডগুলো ব্যবহারকারীর ইনপুট বা অন্যান্য ডেটা দ্বারা পূর্ণ হয়।
এটি "{{placeholder}}" বা "[placeholder]" ইত্যাদি ফর্ম্যাটে থাকতে পারে।
Apache POI ব্যবহার করে Word ডকুমেন্টে Placeholder Text যোগ করা একটি সাধারণ কাজ। আপনি টেক্সট run বা paragraph-এ কিছু placeholder টেক্সট যোগ করতে পারেন, যা পরে ডাইনামিক ডেটার মাধ্যমে প্রতিস্থাপন করা হবে।
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
public class AddPlaceholderText {
public static void main(String[] args) throws IOException {
// নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// Paragraph তৈরি করা
XWPFParagraph paragraph = document.createParagraph();
paragraph.setAlignment(ParagraphAlignment.LEFT);
// Placeholder text যোগ করা
XWPFRun run = paragraph.createRun();
run.setText("Hello, {{name}}! Welcome to the document.");
// ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_placeholder.docx")) {
document.write(out);
}
}
}
এখানে, {{name}} placeholder হিসেবে রাখা হয়েছে, যা পরবর্তী সময়ে Data Binding ব্যবহার করে প্রতিস্থাপন করা যাবে।
Data Binding হল একটি প্রক্রিয়া যেখানে static বা hardcoded ডেটার পরিবর্তে ডাইনামিক ডেটা placeholder গুলোর স্থানে অটোমেটিকভাবে প্রতিস্থাপন হয়। এটি সাধারণত template-driven ডকুমেন্ট তৈরি করতে ব্যবহৃত হয়, যেমন পত্রিকা, চুক্তিপত্র, রিপোর্ট ইত্যাদি যেখানে কিছু অংশ ব্যবহারকারীর বা ডেটাবেস থেকে আসা তথ্য দিয়ে পূর্ণ করা হয়।
এখন, আপনি {{name}} placeholder কে একটি ডাইনামিক ভ্যালু দিয়ে প্রতিস্থাপন করতে পারেন। উদাহরণস্বরূপ, যদি আপনার কাছে একটি ডাটাবেস বা ব্যবহারকারীর ইনপুট থাকে, তবে আপনি সেই তথ্য দিয়ে placeholder প্রতিস্থাপন করতে পারেন।
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ReplacePlaceholderWithData {
public static void main(String[] args) throws IOException {
// ডকুমেন্ট লোড করা
XWPFDocument document = new XWPFDocument(new FileInputStream("document_with_placeholder.docx"));
// ডকুমেন্টে সব Paragraph গুলি পড়া
for (XWPFParagraph paragraph : document.getParagraphs()) {
for (XWPFRun run : paragraph.getRuns()) {
String text = run.getText(0);
// Placeholder text প্রতিস্থাপন
if (text != null && text.contains("{{name}}")) {
text = text.replace("{{name}}", "John Doe"); // {{name}} কে "John Doe" দিয়ে প্রতিস্থাপন
run.setText(text, 0); // নতুন টেক্সট সেট করা
}
}
}
// পরিবর্তিত ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_data.docx")) {
document.write(out);
}
}
}
এখানে, {{name}} placeholder-এ "John Doe" নাম প্রতিস্থাপন করা হয়েছে। এটি data binding এর একটি উদাহরণ, যেখানে ডাইনামিক ডেটা দিয়ে placeholder গুলি প্রতিস্থাপন করা হয়েছে।
কখনও কখনও আপনার ডকুমেন্টে একাধিক placeholder থাকতে পারে বা অনেক ধরণের ডেটা প্রয়োজন হতে পারে। এতে আপনি বিভিন্ন Dynamic Values একত্রিত করে ডকুমেন্টে একাধিক জায়গায় প্রতিস্থাপন করতে পারেন। উদাহরণস্বরূপ:
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ComplexDataBinding {
public static void main(String[] args) throws IOException {
// ডকুমেন্ট লোড করা
XWPFDocument document = new XWPFDocument(new FileInputStream("document_with_placeholder.docx"));
// ডাইনামিক ডেটা
String name = "John Doe";
String date = "2024-12-17";
String address = "123 Main Street";
// Paragraph গুলিতে placeholder গুলি প্রতিস্থাপন
for (XWPFParagraph paragraph : document.getParagraphs()) {
for (XWPFRun run : paragraph.getRuns()) {
String text = run.getText(0);
if (text != null) {
// {{name}} প্রতিস্থাপন
if (text.contains("{{name}}")) {
text = text.replace("{{name}}", name);
}
// {{date}} প্রতিস্থাপন
if (text.contains("{{date}}")) {
text = text.replace("{{date}}", date);
}
// {{address}} প্রতিস্থাপন
if (text.contains("{{address}}")) {
text = text.replace("{{address}}", address);
}
run.setText(text, 0); // নতুন টেক্সট সেট করা
}
}
}
// পরিবর্তিত ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("document_with_complex_data.docx")) {
document.write(out);
}
}
}
এখানে, একাধিক placeholder (যেমন {{name}}, {{date}}, এবং {{address}}) ডাইনামিকভাবে প্রতিস্থাপন করা হয়েছে।
Placeholder Text এবং Data Binding ব্যবহার করে আপনি একটি Word ডকুমেন্টে ডাইনামিক ডেটা সন্নিবেশ করতে পারেন এবং বিভিন্ন placeholders বা template fields প্রতিস্থাপন করতে পারেন। Apache POI লাইব্রেরি এই কাজটি খুব সহজে করতে সহায়তা করে। আপনি যে কোনও placeholder টেক্সট (যেমন {{name}}, {{address}}) ডাইনামিক ডেটা দিয়ে প্রতিস্থাপন করে একটি টেমপ্লেট তৈরি করতে পারেন এবং সেই টেমপ্লেটে ডাইনামিক ডেটা ইন্সার্ট করতে পারেন।
এই ধরনের টেমপ্লেট ব্যবহারের ফলে আপনি সহজে প্রমোশনাল ম্যাটেরিয়াল, রিপোর্ট বা চুক্তিপত্র তৈরি করতে পারেন যেখানে কিছু তথ্য ডাইনামিকভাবে ইনপুট হয়ে থাকে।
Apache POI এর মাধ্যমে Microsoft Word (DOCX) ডকুমেন্টে template management এবং reusability পরিচালনা করা সম্ভব। Template management হলো ডকুমেন্টে পূর্বনির্ধারিত কন্টেন্ট, স্টাইল, এবং ফরম্যাটের ব্যবহার, যা পুনরায় বিভিন্ন পরিস্থিতিতে ব্যবহৃত হতে পারে। এটি ডকুমেন্ট তৈরির প্রক্রিয়াকে দ্রুত এবং কার্যকর করে।
এখানে আমরা দেখবো কিভাবে Word templates তৈরি করা যায় এবং কিভাবে তা পুনঃব্যবহারযোগ্য (reusable) করা যায় বিভিন্ন ডকুমেন্টের মধ্যে।
Word Templates (ডকুমেন্ট টেমপ্লেট) সাধারণত এমন ডকুমেন্ট হয়, যা পূর্বনির্ধারিত কন্টেন্ট, স্টাইল, এবং ফরম্যাট ধারণ করে। Apache POI ব্যবহার করে আপনি সহজেই একটি template তৈরি করতে পারেন এবং তারপর সেটিকে প্রয়োজন অনুসারে customize করতে পারেন।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;
public class TemplateExample {
public static void main(String[] args) throws IOException {
// একটি নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// একটি প্যারাগ্রাফ তৈরি করা (টেমপ্লেটের জন্য স্টাইল সেট করা)
XWPFParagraph paragraph = document.createParagraph();
paragraph.setStyle("Heading1"); // টেমপ্লেটের জন্য হেডিং স্টাইল ব্যবহার করা
// প্যারাগ্রাফের মধ্যে টেক্সট যোগ করা
XWPFRun run = paragraph.createRun();
run.setText("টেমপ্লেটের শিরোনাম");
// টেমপ্লেটের শরীর (Body) তৈরি করা
XWPFParagraph bodyParagraph = document.createParagraph();
XWPFRun bodyRun = bodyParagraph.createRun();
bodyRun.setText("এটি একটি টেমপ্লেটের শরীরের কন্টেন্ট।");
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("TemplateExample.docx")) {
document.write(out);
}
System.out.println("Template created successfully!");
}
}
ডকুমেন্টের টেমপ্লেট তৈরি করার পর, আপনি সেই টেমপ্লেটের মধ্যে কিছু জায়গায় dynamic data (যেমন, নাম, তারিখ, ঠিকানা ইত্যাদি) সন্নিবেশ করতে পারেন। এটি ডকুমেন্টের পুনঃব্যবহারযোগ্যতা এবং কাস্টমাইজেশন সহজ করে।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileOutputStream;
import java.io.IOException;
public class TemplateWithDynamicData {
public static void main(String[] args) throws IOException {
// ডাইনামিক ডেটা
String recipientName = "John Doe";
String currentDate = "2024-12-17";
// একটি নতুন Word ডকুমেন্ট তৈরি করা
XWPFDocument document = new XWPFDocument();
// প্যারাগ্রাফ তৈরি করা এবং ডাইনামিক ডেটা যোগ করা
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("প্রিয় " + recipientName + ",");
// পরবর্তী প্যারাগ্রাফে ডাইনামিক ডেটা ব্যবহার করা
XWPFParagraph bodyParagraph = document.createParagraph();
XWPFRun bodyRun = bodyParagraph.createRun();
bodyRun.setText("আপনাকে জানানো হচ্ছে যে, আজকের তারিখ: " + currentDate);
// Word ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("TemplateWithDynamicData.docx")) {
document.write(out);
}
System.out.println("Template with dynamic data created successfully!");
}
}
Reusable templates তৈরি করতে, একটি টেমপ্লেট ফাইল তৈরি করে সেটি বিভিন্ন প্রোজেক্টে বা ডকুমেন্টে ব্যবহার করা যেতে পারে। এর জন্য আপনি Apache POI দিয়ে একবার একটি template তৈরি করে সেটিকে পরে বিভিন্ন ডাইনামিক ডেটা দিয়ে পরিবর্তন (modify) করতে পারবেন।
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class ReusableTemplateExample {
public static void main(String[] args) throws IOException {
// পূর্বে তৈরি করা টেমপ্লেট ফাইল থেকে ডকুমেন্ট লোড করা
FileInputStream templateFile = new FileInputStream("TemplateExample.docx");
XWPFDocument document = new XWPFDocument(templateFile);
// ডাইনামিক ডেটা
String recipientName = "Jane Smith";
String currentDate = "2024-12-18";
// টেমপ্লেটের প্রথম প্যারাগ্রাফে ডেটা সাবস্টিটিউট করা
XWPFParagraph paragraph = document.getParagraphArray(0);
XWPFRun run = paragraph.getRuns().get(0);
run.setText("প্রিয় " + recipientName + ",");
// টেমপ্লেটের দ্বিতীয় প্যারাগ্রাফে ডেটা সাবস্টিটিউট করা
XWPFParagraph bodyParagraph = document.getParagraphArray(1);
XWPFRun bodyRun = bodyParagraph.getRuns().get(0);
bodyRun.setText("আপনাকে জানানো হচ্ছে যে, আজকের তারিখ: " + currentDate);
// পরিবর্তিত ডকুমেন্ট সেভ করা
try (FileOutputStream out = new FileOutputStream("ReusableTemplateExample.docx")) {
document.write(out);
}
System.out.println("Reusable template updated successfully!");
}
}
Apache POI এর মাধ্যমে template management এবং reusability কার্যকরভাবে পরিচালনা করা যায়। আপনি একবার একটি Word template তৈরি করে সেটিকে বিভিন্ন ডাইনামিক ডেটা দিয়ে কাস্টমাইজ এবং পুনরায় ব্যবহার করতে পারেন। এটি ডকুমেন্ট তৈরির সময় অনেকটা স্বয়ংক্রিয়তা এবং কার্যকারিতা যোগ করে, বিশেষ করে যখন একাধিক ডকুমেন্ট একই ধরনের কাঠামো এবং ফরম্যাট ধারণ করে।
common.read_more